- 本篇將帶領大家透過
虛擬鍵盤
套用在遊戲中,讓遊戲得分最高者
可以顯示在遊戲的成就上,並顯示其分數。- 本篇將用Chase The Pizza專案來演示
edit code
即可下載並編輯此專案https://github.com/riknoll/arcade-custom-menu
來擴充功能積木雖可讓我們能更簡單了解程式的內容,卻無法完整呈現我們想使用的功能,需要搭配Javascript來補積木編排的不足,因此本篇將會用積木和 Javascript兩部分來完成
選單功能
以及紀錄最高分數
1.選擇擴展BlockMenu中的on menu option selected
積木,並將當啟動時
積木裡的所有積木移動到裡面
2.選擇擴展BlockMenu中的show grid menu fullscreen with option
積木 放入到 當啟動時
積木中,並將fullsceen改成bottom half、grid改為list ,並在後面的陣列輸入新遊戲、成就
3.建立3個變數分別為name、high、record
將變數record設為0
積木放入到當啟動時
積木,並將資訊類別中最高得分
積木放入到變數record設為0
積木的裡面
4.使用資訊類別中當倒數結束
積木,然後在裡面將積木組合成如果(得分>變數record)那麼變數record設為得分
,最後在如果()那麼()
積木外放入遊戲類別中遊戲結束 結果( )
積木,並在( )內放入BlockMenu中放入is menu open
積木
5.在on menu option selected
積木中放入積木並組合成如果(option = 新遊戲)那麼( )
,並將原本在on menu option selected
裡的所有積木移動到裡面
6.放入一組積木如果(option = 成就)那麼( )
在on menu option selected
積木中,並將BlockMenu中close menu
積木放入到如果( )那麼( )
的裡面。(兩組積木都要放入)
7.在如果(option = 成就)那麼( )
積木中再放入一組積木如果(A鍵被按住)那麼( )
,然後在裡面放入show list menu bottom half with option (新遊戲) (成就)
8.在當角色sprite類別player重疊角色othersprite類別Food
積木中放入變數high改變"1"
積木
↑↑↑積木部分已結束↑↑↑
紀錄名字的功能
9.將變數name
的文字初始為沒有值的,讓變數high
每次遊戲開始時都會歸零
//定義初始變數值
let high = 0
let name: string = null
//
info.onCountdownEnd(function () {
if (info.score() > record) {
record = info.score()
}
game.over(blockMenu.isMenuOpen())
})
sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) {
record += 1
info.changeScoreBy(1)
info.startCountdown(10)
otherSprite.setPosition(randint(0, scene.screenWidth()), randint(0, scene.screenHeight()))
})
blockMenu.onMenuOptionSelected(function (option, index) {
if (option == "新遊戲") {
blockMenu.closeMenu()
scene.setBackgroundColor(7)
smiley = sprites.create(img`
. . . . 5 5 5 5 5 5 5 . . . . .
. . 5 5 5 5 5 5 5 5 5 5 5 . . .
. 5 5 5 5 5 5 5 5 5 5 5 5 5 . .
. 5 5 5 5 5 5 5 5 5 5 5 5 5 . .
5 5 5 5 5 f 5 5 5 f 5 5 5 5 5 .
5 5 5 5 5 f 5 5 5 f 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 f 5 5 5 5 5 5 5 f 5 5 5 .
. 5 5 5 f f 5 5 5 f f 5 5 5 . .
. 5 5 5 5 5 f f f 5 5 5 5 5 . .
. . 5 5 5 5 5 5 5 5 5 5 5 . . .
. . . . 5 5 5 5 5 5 5 . . . . .
. . . . . . . . . . . . . . . .
`, SpriteKind.Player)
controller.moveSprite(smiley, 100, 100)
smiley.setStayInScreen(true)
pizza = sprites.create(img`
. . . . . . b b b b . . . . . .
. . . . . . b 4 4 4 b . . . . .
. . . . . . b b 4 4 4 b . . . .
. . . . . b 4 b b b 4 4 b . . .
. . . . b d 5 5 5 4 b 4 4 b . .
. . . . b 3 2 3 5 5 4 e 4 4 b .
. . . b d 2 2 2 5 7 5 4 e 4 4 e
. . . b 5 3 2 3 5 5 5 5 e e e e
. . b d 7 5 5 5 3 2 3 5 5 e e e
. . b 5 5 5 5 5 2 2 2 5 5 d e e
. b 3 2 3 5 7 5 3 2 3 5 d d e 4
. b 2 2 2 5 5 5 5 5 5 d d e 4 .
b d 3 2 d 5 5 5 d d d 4 4 . . .
b 5 5 5 5 d d 4 4 4 4 . . . . .
4 d d d 4 4 4 . . . . . . . . .
4 4 4 4 . . . . . . . . . . . .
`, SpriteKind.Food)
info.startCountdown(10)
info.setScore(0)
}
if (option == "成就") {
blockMenu.closeMenu()
if (controller.A.isPressed()) {
blockMenu.showMenu(["新遊戲", "成就"], MenuStyle.List, MenuLocation.BottomHalf)
}
}
})
let pizza: Sprite = null
let smiley: Sprite = null
let record = 0
blockMenu.showMenu(["新遊戲", "成就"], MenuStyle.List, MenuLocation.BottomHalf)
record = info.highScore()
10.做三個function並自己命名 writePlayerInfo
、showPlayerInfo
、readPlayerInfo
補充:function不能在任何一個功能區塊內,此才能為全域功能使所有區塊內使用都能識別
//定義初始變數值
let high = 0
let name: string = null
//
///定義三個function
function writePlayerInfo () {
}
function showPlayerInfo () {
}
function readPlayerInfo () {
}
///
info.onCountdownEnd(function () {
if (info.score() > record) {
record = info.score()
}
game.over(blockMenu.isMenuOpen())
})
sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) {
record += 1
info.changeScoreBy(1)
info.startCountdown(10)
otherSprite.setPosition(randint(0, scene.screenWidth()), randint(0, scene.screenHeight()))
})
blockMenu.onMenuOptionSelected(function (option, index) {
if (option == "新遊戲") {
blockMenu.closeMenu()
scene.setBackgroundColor(7)
smiley = sprites.create(img`
. . . . 5 5 5 5 5 5 5 . . . . .
. . 5 5 5 5 5 5 5 5 5 5 5 . . .
. 5 5 5 5 5 5 5 5 5 5 5 5 5 . .
. 5 5 5 5 5 5 5 5 5 5 5 5 5 . .
5 5 5 5 5 f 5 5 5 f 5 5 5 5 5 .
5 5 5 5 5 f 5 5 5 f 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 f 5 5 5 5 5 5 5 f 5 5 5 .
. 5 5 5 f f 5 5 5 f f 5 5 5 . .
. 5 5 5 5 5 f f f 5 5 5 5 5 . .
. . 5 5 5 5 5 5 5 5 5 5 5 . . .
. . . . 5 5 5 5 5 5 5 . . . . .
. . . . . . . . . . . . . . . .
`, SpriteKind.Player)
controller.moveSprite(smiley, 100, 100)
smiley.setStayInScreen(true)
pizza = sprites.create(img`
. . . . . . b b b b . . . . . .
. . . . . . b 4 4 4 b . . . . .
. . . . . . b b 4 4 4 b . . . .
. . . . . b 4 b b b 4 4 b . . .
. . . . b d 5 5 5 4 b 4 4 b . .
. . . . b 3 2 3 5 5 4 e 4 4 b .
. . . b d 2 2 2 5 7 5 4 e 4 4 e
. . . b 5 3 2 3 5 5 5 5 e e e e
. . b d 7 5 5 5 3 2 3 5 5 e e e
. . b 5 5 5 5 5 2 2 2 5 5 d e e
. b 3 2 3 5 7 5 3 2 3 5 d d e 4
. b 2 2 2 5 5 5 5 5 5 d d e 4 .
b d 3 2 d 5 5 5 d d d 4 4 . . .
b 5 5 5 5 d d 4 4 4 4 . . . . .
4 d d d 4 4 4 . . . . . . . . .
4 4 4 4 . . . . . . . . . . . .
`, SpriteKind.Food)
info.startCountdown(10)
info.setScore(0)
}
if (option == "成就") {
blockMenu.closeMenu()
if (controller.A.isPressed()) {
blockMenu.showMenu(["新遊戲", "成就"], MenuStyle.List, MenuLocation.BottomHalf)
}
}
})
let pizza: Sprite = null
let smiley: Sprite = null
let record = 0
blockMenu.showMenu(["新遊戲", "成就"], MenuStyle.List, MenuLocation.BottomHalf)
record = info.highScore()
11.settings.writeString( )
可將輸入的名字寫入到Arcade的內建記憶體上
補充:存儲上限為16KB
//定義初始變數值
let high = 0
let name: string = null
//
///定義三個function
function writePlayerInfo () {
settings.writeString('Name', name)
}
function showPlayerInfo () {
}
function readPlayerInfo () {
}
///
info.onCountdownEnd(function () {
if (info.score() > record) {
record = info.score()
}
game.over(blockMenu.isMenuOpen())
})
sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) {
record += 1
info.changeScoreBy(1)
info.startCountdown(10)
otherSprite.setPosition(randint(0, scene.screenWidth()), randint(0, scene.screenHeight()))
})
blockMenu.onMenuOptionSelected(function (option, index) {
if (option == "新遊戲") {
blockMenu.closeMenu()
scene.setBackgroundColor(7)
smiley = sprites.create(img`
. . . . 5 5 5 5 5 5 5 . . . . .
. . 5 5 5 5 5 5 5 5 5 5 5 . . .
. 5 5 5 5 5 5 5 5 5 5 5 5 5 . .
. 5 5 5 5 5 5 5 5 5 5 5 5 5 . .
5 5 5 5 5 f 5 5 5 f 5 5 5 5 5 .
5 5 5 5 5 f 5 5 5 f 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 f 5 5 5 5 5 5 5 f 5 5 5 .
. 5 5 5 f f 5 5 5 f f 5 5 5 . .
. 5 5 5 5 5 f f f 5 5 5 5 5 . .
. . 5 5 5 5 5 5 5 5 5 5 5 . . .
. . . . 5 5 5 5 5 5 5 . . . . .
. . . . . . . . . . . . . . . .
`, SpriteKind.Player)
controller.moveSprite(smiley, 100, 100)
smiley.setStayInScreen(true)
pizza = sprites.create(img`
. . . . . . b b b b . . . . . .
. . . . . . b 4 4 4 b . . . . .
. . . . . . b b 4 4 4 b . . . .
. . . . . b 4 b b b 4 4 b . . .
. . . . b d 5 5 5 4 b 4 4 b . .
. . . . b 3 2 3 5 5 4 e 4 4 b .
. . . b d 2 2 2 5 7 5 4 e 4 4 e
. . . b 5 3 2 3 5 5 5 5 e e e e
. . b d 7 5 5 5 3 2 3 5 5 e e e
. . b 5 5 5 5 5 2 2 2 5 5 d e e
. b 3 2 3 5 7 5 3 2 3 5 d d e 4
. b 2 2 2 5 5 5 5 5 5 d d e 4 .
b d 3 2 d 5 5 5 d d d 4 4 . . .
b 5 5 5 5 d d 4 4 4 4 . . . . .
4 d d d 4 4 4 . . . . . . . . .
4 4 4 4 . . . . . . . . . . . .
`, SpriteKind.Food)
info.startCountdown(10)
info.setScore(0)
}
if (option == "成就") {
blockMenu.closeMenu()
if (controller.A.isPressed()) {
blockMenu.showMenu(["新遊戲", "成就"], MenuStyle.List, MenuLocation.BottomHalf)
}
}
})
let pizza: Sprite = null
let smiley: Sprite = null
let record = 0
blockMenu.showMenu(["新遊戲", "成就"], MenuStyle.List, MenuLocation.BottomHalf)
record = info.highScore()
12.settings.readString( )
可將記憶體存儲的資料進行讀取
//定義初始變數值
let high = 0
let name: string = null
//
///定義三個function
//將資料寫入記憶體
function writePlayerInfo () {
settings.writeString('Name', name)
}
function showPlayerInfo () {
}
//讀取寫入記憶體的資料
function readPlayerInfo () {
name = settings.readString('Name')
}
///
info.onCountdownEnd(function () {
if (info.score() > record) {
record = info.score()
}
game.over(blockMenu.isMenuOpen())
})
sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) {
record += 1
info.changeScoreBy(1)
info.startCountdown(10)
otherSprite.setPosition(randint(0, scene.screenWidth()), randint(0, scene.screenHeight()))
})
blockMenu.onMenuOptionSelected(function (option, index) {
if (option == "新遊戲") {
blockMenu.closeMenu()
scene.setBackgroundColor(7)
smiley = sprites.create(img`
. . . . 5 5 5 5 5 5 5 . . . . .
. . 5 5 5 5 5 5 5 5 5 5 5 . . .
. 5 5 5 5 5 5 5 5 5 5 5 5 5 . .
. 5 5 5 5 5 5 5 5 5 5 5 5 5 . .
5 5 5 5 5 f 5 5 5 f 5 5 5 5 5 .
5 5 5 5 5 f 5 5 5 f 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 f 5 5 5 5 5 5 5 f 5 5 5 .
. 5 5 5 f f 5 5 5 f f 5 5 5 . .
. 5 5 5 5 5 f f f 5 5 5 5 5 . .
. . 5 5 5 5 5 5 5 5 5 5 5 . . .
. . . . 5 5 5 5 5 5 5 . . . . .
. . . . . . . . . . . . . . . .
`, SpriteKind.Player)
controller.moveSprite(smiley, 100, 100)
smiley.setStayInScreen(true)
pizza = sprites.create(img`
. . . . . . b b b b . . . . . .
. . . . . . b 4 4 4 b . . . . .
. . . . . . b b 4 4 4 b . . . .
. . . . . b 4 b b b 4 4 b . . .
. . . . b d 5 5 5 4 b 4 4 b . .
. . . . b 3 2 3 5 5 4 e 4 4 b .
. . . b d 2 2 2 5 7 5 4 e 4 4 e
. . . b 5 3 2 3 5 5 5 5 e e e e
. . b d 7 5 5 5 3 2 3 5 5 e e e
. . b 5 5 5 5 5 2 2 2 5 5 d e e
. b 3 2 3 5 7 5 3 2 3 5 d d e 4
. b 2 2 2 5 5 5 5 5 5 d d e 4 .
b d 3 2 d 5 5 5 d d d 4 4 . . .
b 5 5 5 5 d d 4 4 4 4 . . . . .
4 d d d 4 4 4 . . . . . . . . .
4 4 4 4 . . . . . . . . . . . .
`, SpriteKind.Food)
info.startCountdown(10)
info.setScore(0)
}
if (option == "成就") {
blockMenu.closeMenu()
if (controller.A.isPressed()) {
blockMenu.showMenu(["新遊戲", "成就"], MenuStyle.List, MenuLocation.BottomHalf)
}
}
})
let pizza: Sprite = null
let smiley: Sprite = null
let record = 0
blockMenu.showMenu(["新遊戲", "成就"], MenuStyle.List, MenuLocation.BottomHalf)
record = info.highScore()
13.function showPlayerInfo ()
為讀取存儲的資料並顯示出來
//定義初始變數值
let high = 0
let name: string = null
//
///定義三個function
//將資料寫入記憶體
function writePlayerInfo () {
settings.writeString('Name', name)
}
//讀取存儲的資料並顯示出來
function showPlayerInfo () {
game.splash("Name:" + name + " HIGH Score:" + record)
}
//讀取寫入記憶體的資料
function readPlayerInfo () {
name = settings.readString('Name')
}
///
info.onCountdownEnd(function () {
if (info.score() > record) {
record = info.score()
}
game.over(blockMenu.isMenuOpen())
})
sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) {
record += 1
info.changeScoreBy(1)
info.startCountdown(10)
otherSprite.setPosition(randint(0, scene.screenWidth()), randint(0, scene.screenHeight()))
})
blockMenu.onMenuOptionSelected(function (option, index) {
if (option == "新遊戲") {
blockMenu.closeMenu()
scene.setBackgroundColor(7)
smiley = sprites.create(img`
. . . . 5 5 5 5 5 5 5 . . . . .
. . 5 5 5 5 5 5 5 5 5 5 5 . . .
. 5 5 5 5 5 5 5 5 5 5 5 5 5 . .
. 5 5 5 5 5 5 5 5 5 5 5 5 5 . .
5 5 5 5 5 f 5 5 5 f 5 5 5 5 5 .
5 5 5 5 5 f 5 5 5 f 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 f 5 5 5 5 5 5 5 f 5 5 5 .
. 5 5 5 f f 5 5 5 f f 5 5 5 . .
. 5 5 5 5 5 f f f 5 5 5 5 5 . .
. . 5 5 5 5 5 5 5 5 5 5 5 . . .
. . . . 5 5 5 5 5 5 5 . . . . .
. . . . . . . . . . . . . . . .
`, SpriteKind.Player)
controller.moveSprite(smiley, 100, 100)
smiley.setStayInScreen(true)
pizza = sprites.create(img`
. . . . . . b b b b . . . . . .
. . . . . . b 4 4 4 b . . . . .
. . . . . . b b 4 4 4 b . . . .
. . . . . b 4 b b b 4 4 b . . .
. . . . b d 5 5 5 4 b 4 4 b . .
. . . . b 3 2 3 5 5 4 e 4 4 b .
. . . b d 2 2 2 5 7 5 4 e 4 4 e
. . . b 5 3 2 3 5 5 5 5 e e e e
. . b d 7 5 5 5 3 2 3 5 5 e e e
. . b 5 5 5 5 5 2 2 2 5 5 d e e
. b 3 2 3 5 7 5 3 2 3 5 d d e 4
. b 2 2 2 5 5 5 5 5 5 d d e 4 .
b d 3 2 d 5 5 5 d d d 4 4 . . .
b 5 5 5 5 d d 4 4 4 4 . . . . .
4 d d d 4 4 4 . . . . . . . . .
4 4 4 4 . . . . . . . . . . . .
`, SpriteKind.Food)
info.startCountdown(10)
info.setScore(0)
}
if (option == "成就") {
blockMenu.closeMenu()
if (controller.A.isPressed()) {
blockMenu.showMenu(["新遊戲", "成就"], MenuStyle.List, MenuLocation.BottomHalf)
}
}
})
let pizza: Sprite = null
let smiley: Sprite = null
let record = 0
blockMenu.showMenu(["新遊戲", "成就"], MenuStyle.List, MenuLocation.BottomHalf)
record = info.highScore()
14.在if (option == "新遊戲"){ }
裡輸入name = game.askForString("What is your name?")
讓遊戲開始時會要求輸入名字,然後在if (info.score() > record) {}
裡輸入writePlayerInfo ()
使如果破紀錄會將名字寫入記憶體
//定義初始變數值
let high = 0
let name: string = null
//
///定義三個function
//將資料寫入記憶體
function writePlayerInfo () {
settings.writeString('Name', name)
}
//讀取存儲的資料並顯示出來
function showPlayerInfo () {
game.splash("Name:" + name + " HIGH Score:" + record)
}
//讀取寫入記憶體的資料
function readPlayerInfo () {
name = settings.readString('Name')
}
///
info.onCountdownEnd(function () {
if (info.score() > record) {
record = info.score()
writePlayerInfo () //如果破紀錄會將名字寫入記憶體
}
game.over(blockMenu.isMenuOpen())
})
sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) {
record += 1
info.changeScoreBy(1)
info.startCountdown(10)
otherSprite.setPosition(randint(0, scene.screenWidth()), randint(0, scene.screenHeight()))
})
blockMenu.onMenuOptionSelected(function (option, index) {
if (option == "新遊戲") {
blockMenu.closeMenu()
//開始遊戲時要求輸入名字
name = game.askForString("What is your name?")
scene.setBackgroundColor(7)
smiley = sprites.create(img`
. . . . 5 5 5 5 5 5 5 . . . . .
. . 5 5 5 5 5 5 5 5 5 5 5 . . .
. 5 5 5 5 5 5 5 5 5 5 5 5 5 . .
. 5 5 5 5 5 5 5 5 5 5 5 5 5 . .
5 5 5 5 5 f 5 5 5 f 5 5 5 5 5 .
5 5 5 5 5 f 5 5 5 f 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 f 5 5 5 5 5 5 5 f 5 5 5 .
. 5 5 5 f f 5 5 5 f f 5 5 5 . .
. 5 5 5 5 5 f f f 5 5 5 5 5 . .
. . 5 5 5 5 5 5 5 5 5 5 5 . . .
. . . . 5 5 5 5 5 5 5 . . . . .
. . . . . . . . . . . . . . . .
`, SpriteKind.Player)
controller.moveSprite(smiley, 100, 100)
smiley.setStayInScreen(true)
pizza = sprites.create(img`
. . . . . . b b b b . . . . . .
. . . . . . b 4 4 4 b . . . . .
. . . . . . b b 4 4 4 b . . . .
. . . . . b 4 b b b 4 4 b . . .
. . . . b d 5 5 5 4 b 4 4 b . .
. . . . b 3 2 3 5 5 4 e 4 4 b .
. . . b d 2 2 2 5 7 5 4 e 4 4 e
. . . b 5 3 2 3 5 5 5 5 e e e e
. . b d 7 5 5 5 3 2 3 5 5 e e e
. . b 5 5 5 5 5 2 2 2 5 5 d e e
. b 3 2 3 5 7 5 3 2 3 5 d d e 4
. b 2 2 2 5 5 5 5 5 5 d d e 4 .
b d 3 2 d 5 5 5 d d d 4 4 . . .
b 5 5 5 5 d d 4 4 4 4 . . . . .
4 d d d 4 4 4 . . . . . . . . .
4 4 4 4 . . . . . . . . . . . .
`, SpriteKind.Food)
info.startCountdown(10)
info.setScore(0)
}
if (option == "成就") {
blockMenu.closeMenu()
if (controller.A.isPressed()) {
blockMenu.showMenu(["新遊戲", "成就"], MenuStyle.List, MenuLocation.BottomHalf)
}
}
})
let pizza: Sprite = null
let smiley: Sprite = null
let record = 0
blockMenu.showMenu(["新遊戲", "成就"], MenuStyle.List, MenuLocation.BottomHalf)
record = info.highScore()
15.在if (option == "成就") {}
裡輸入readPlayerInfo()
讀取已寫入的名字、showPlayerInfo()
將讀取到的名字顯示出來。
//定義初始變數值
let high = 0
let name: string = null
//
///定義三個function
//將資料寫入記憶體
function writePlayerInfo () {
settings.writeString('Name', name)
}
//讀取存儲的資料並顯示出來
function showPlayerInfo () {
game.splash("Name:" + name + " HIGH Score:" + record)
}
//讀取寫入記憶體的資料
function readPlayerInfo () {
name = settings.readString('Name')
}
///
info.onCountdownEnd(function () {
if (info.score() > record) {
record = info.score()
writePlayerInfo () //如果破紀錄會將名字寫入記憶體
}
game.over(blockMenu.isMenuOpen())
})
sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) {
record += 1
info.changeScoreBy(1)
info.startCountdown(10)
otherSprite.setPosition(randint(0, scene.screenWidth()), randint(0, scene.screenHeight()))
})
blockMenu.onMenuOptionSelected(function (option, index) {
if (option == "新遊戲") {
blockMenu.closeMenu()
//開始遊戲時要求輸入名字
name = game.askForString("What is your name?")
scene.setBackgroundColor(7)
smiley = sprites.create(img`
. . . . 5 5 5 5 5 5 5 . . . . .
. . 5 5 5 5 5 5 5 5 5 5 5 . . .
. 5 5 5 5 5 5 5 5 5 5 5 5 5 . .
. 5 5 5 5 5 5 5 5 5 5 5 5 5 . .
5 5 5 5 5 f 5 5 5 f 5 5 5 5 5 .
5 5 5 5 5 f 5 5 5 f 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
5 5 5 f 5 5 5 5 5 5 5 f 5 5 5 .
. 5 5 5 f f 5 5 5 f f 5 5 5 . .
. 5 5 5 5 5 f f f 5 5 5 5 5 . .
. . 5 5 5 5 5 5 5 5 5 5 5 . . .
. . . . 5 5 5 5 5 5 5 . . . . .
. . . . . . . . . . . . . . . .
`, SpriteKind.Player)
controller.moveSprite(smiley, 100, 100)
smiley.setStayInScreen(true)
pizza = sprites.create(img`
. . . . . . b b b b . . . . . .
. . . . . . b 4 4 4 b . . . . .
. . . . . . b b 4 4 4 b . . . .
. . . . . b 4 b b b 4 4 b . . .
. . . . b d 5 5 5 4 b 4 4 b . .
. . . . b 3 2 3 5 5 4 e 4 4 b .
. . . b d 2 2 2 5 7 5 4 e 4 4 e
. . . b 5 3 2 3 5 5 5 5 e e e e
. . b d 7 5 5 5 3 2 3 5 5 e e e
. . b 5 5 5 5 5 2 2 2 5 5 d e e
. b 3 2 3 5 7 5 3 2 3 5 d d e 4
. b 2 2 2 5 5 5 5 5 5 d d e 4 .
b d 3 2 d 5 5 5 d d d 4 4 . . .
b 5 5 5 5 d d 4 4 4 4 . . . . .
4 d d d 4 4 4 . . . . . . . . .
4 4 4 4 . . . . . . . . . . . .
`, SpriteKind.Food)
info.startCountdown(10)
info.setScore(0)
}
if (option == "成就") {
blockMenu.closeMenu()
readPlayerInfo() //讀取已寫入的名字
showPlayerInfo() //將讀取到的名字顯示出來
if (controller.A.isPressed()) {
blockMenu.showMenu(["新遊戲", "成就"], MenuStyle.List, MenuLocation.BottomHalf)
}
}
})
let pizza: Sprite = null
let smiley: Sprite = null
let record = 0
blockMenu.showMenu(["新遊戲", "成就"], MenuStyle.List, MenuLocation.BottomHalf)
record = info.highScore()